package edu.tamu.cse.teamproject1.Database.Interfaces;

import edu.tamu.cse.teamproject1.Database.TupleElement;

/**
 * Describes a TupleElement
 * 
 * A TupleElement is the smallest value object class in our database. It contains
 * the definition of a column (what type of column it is, whether it can be null,
 * etc.) as well as the value of the column. See {@link TupleElement} for further
 * details on TupleElements. 
 * 
 * @author Christopher Weldon <chris@chrisweldon.net>
 * @since Release 0.1.0
 */
public interface ITupleElement extends IColumnDefinition, Cloneable {
	/**     
	 * Retrieves the value of the TupleElement
	 * 
	 * @return Object Value of the TupleElement
	 */    
	Object getValue();    
	
	/**     
	 * Sets the value of the TupleElement
	 * 
	 * @param Object value Value of the TupleElement
	 * @return void
	 */    
	void setValue(Object value);
	
	/**
	 * Checks to see if this is a new null tuple element
	 * 
	 * @return True if the value is null
	 */
	boolean isValueNull();
	
	/**
	 * Sets whether the value is null or not
	 * 
	 * @param isValueNull
	 */
	void setValueNull(boolean isValueNull);
}
